﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Modelo;
using Logica;
using Logica.Modulos.ClasesLogica;
using Modelo.Modulos.ClasesModelado;






namespace ProyectoFinal
{
    public partial class frmCatalogoPrioridades : Form
    {
        private int idPerfil;
        public int IdPerfil
        {
            get { return idPerfil; }
            set { idPerfil = value; }
        }
        
       
        public frmCatalogoPrioridades()
        {
            InitializeComponent();
        }
        string Accion_Form = "";
        private void button1_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            try
            {
                Accion_Form = "Agregar";
                PrioridadesMod objMod = new PrioridadesMod();
                objMod.Nombre = txtNombre.Text;
                objMod.Descripcion = txtDescripcion.Text;

                Prioridadeslog Logica = new Prioridadeslog();
                Logica.Insertar(objMod);
                CargarGrid(Accion_Form, objMod);
                
            }
            catch (Exception exc)
            {

                MessageBox.Show(exc.Message, "Error de capa 8", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        public void CargarGrid(string Accion_Form, PrioridadesMod objMod)
        {
            
            if ((Accion_Form == "Agregar") || (Accion_Form == "Cargar") || (Accion_Form == "Editar"))
            {
                dataGridView1.Rows.Clear();
                Prioridadeslog logica = new Prioridadeslog();
                List<PrioridadesMod> ListaPrioridades = logica.Consultar();

                for (int i = 0; i < ListaPrioridades.Count; i++)
                {
                    dataGridView1.Rows.Add();
                    dataGridView1.Rows[i].Cells[0].Value = ListaPrioridades[i].IdPrioridad;
                    dataGridView1.Rows[i].Cells[1].Value = ListaPrioridades[i].Nombre;
                    dataGridView1.Rows[i].Cells[2].Value = ListaPrioridades[i].Descripcion;
                }
            }
            else
            {
                if (Accion_Form == "Eliminar")
                {
                    Prioridadeslog logica = new Prioridadeslog();
                    List<PrioridadesMod> ListaPrioridades = logica.Consultar();

                    DataGridViewSelectedRowCollection listaGrid = dataGridView1.SelectedRows;
                    for (int i = listaGrid.Count - 1; i >= 0; i--)
                    {
                        dataGridView1.Rows.RemoveAt(listaGrid[i].Index);
                    }
                }
                else
                {
                    if (Accion_Form == "Mostrar")
                    {
                        Prioridadeslog Logica = new Prioridadeslog();
                        List<PrioridadesMod> ListaPrioridades = Logica.ConsultarPrioridadId(objMod);

                        for (int i = 0; i < ListaPrioridades.Count; i++)
                        {

                            txtNombre.Text = ListaPrioridades[i].Nombre;
                            txtDescripcion.Text = ListaPrioridades[i].Descripcion;
                        }
                    }

                }

            }

        }

        public Boolean ValidacionesCampos()
        {
            if (txtNombre.Text == "")
            { //Preguntar al profe com validar numeros o letras
                MessageBox.Show("El campo de nombre esta vacio ", "Validacion Campos", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtNombre.Focus();
                return false;
            }
            if (txtDescripcion.Text == "")
            {
                MessageBox.Show("El campo de la Descripcion esta vacio", "Validacion Campos", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtDescripcion.Focus();
                return false;
            }

            return true;
        }
        private void frmCatalogoPrioridades_Load(object sender, EventArgs e)
        {
            CargarPermisos();
            Accion_Form = "Cargar";
            PrioridadesMod objMod = new PrioridadesMod();
            CargarGrid(Accion_Form, objMod);
            btnEditar.Enabled = false;
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            try
            {
                Accion_Form = "Eliminar";
                int Idindice = dataGridView1.SelectedRows[0].Index;
                int Ideliminar = Convert.ToInt32(dataGridView1[0, Idindice].Value);

                PrioridadesMod objMod = new PrioridadesMod();
                objMod.IdPrioridad = Ideliminar;


                Prioridadeslog Logica = new Prioridadeslog();
                Logica.Eliminar(objMod);

                CargarGrid(Accion_Form, objMod);
            }
            catch (Exception exc)
            {

                MessageBox.Show(exc.Message, "Error de capa 8", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {

            try
            {
                if (ValidacionesCampos() == true)
                {
                    Accion_Form = "Editar";
                    int Idindice = dataGridView1.SelectedRows[0].Index;
                    PrioridadesMod objMod = new PrioridadesMod();
                    objMod.IdPrioridad = Convert.ToInt32(dataGridView1[0, Idindice].Value);
                    objMod.Nombre = txtNombre.Text;
                    objMod.Descripcion = txtDescripcion.Text;

                    Prioridadeslog Logica = new Prioridadeslog();
                    Logica.ActualizarPrioridades(objMod);

                    CargarGrid(Accion_Form, objMod);
                    btnAgregar.Enabled = true;
                    btnEliminar.Enabled = true;
                    btnEditar.Enabled = false;
                }



            }
            catch (Exception exc)
            {

                MessageBox.Show(exc.Message, "Error de capa 8", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

        }

        private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                Accion_Form = "Mostrar";
                int Idindice = dataGridView1.SelectedRows[0].Index;
                int IdActualizar = Convert.ToInt32(dataGridView1[0, Idindice].Value);

                PrioridadesMod objMod = new PrioridadesMod();
                objMod.IdPrioridad = IdActualizar;


                Prioridadeslog Logica = new Prioridadeslog();
                Logica.ConsultarPrioridadId(objMod);

                CargarGrid(Accion_Form, objMod);

                btnAgregar.Enabled = false;
                btnEliminar.Enabled = false;
                btnEditar.Enabled = true;

            }
            catch (Exception exc)
            {

                MessageBox.Show(exc.Message, "Error de capa 8", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        public void CargarPermisos()
        {
            btnAgregar.Visible = false;
            btnEditar.Visible = false;
            btnEliminar.Visible = false;
            dataGridView1.CellDoubleClick -= dataGridView1_CellDoubleClick;
            Perfil_PermisoLog Logica = new Perfil_PermisoLog();
            PerfilesMod objMod = new PerfilesMod();
            objMod.IdPerfil = idPerfil;
            List<PerfilesMod> listaPermisos_Perfil = Logica.ConsultarPermisoIdPerfil(objMod);



            for (int i = 0; i < listaPermisos_Perfil.Count; i++)
            {
                if (listaPermisos_Perfil[i].NombrePermiso == "Agregar Valor de Catalogo")
                {
                    btnAgregar.Visible = true;
                }
                else
                {
                    if (listaPermisos_Perfil[i].NombrePermiso == "Modificar Valor de Catalogo")
                    {
                        btnEditar.Visible = true;
                        dataGridView1.CellDoubleClick += dataGridView1_CellDoubleClick;
                    }
                    else
                    {
                        if (listaPermisos_Perfil[i].NombrePermiso == "Eliminar Valor de Catalogo")
                        {
                            btnEliminar.Visible = true;
                        }
                        else
                        {
                            if (listaPermisos_Perfil[i].NombrePermiso == "Ver Valor de Catalogo")
                            {
                                dataGridView1.CellDoubleClick += dataGridView1_CellDoubleClick;
                            }
                        }
                    }

                }
            }
        }

       

       

        

      


    }
}
